﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace CIT.WMS
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [MTAThread]
        static void Main()
        {
            //Application.Run(new FrmLogin());
            Application.Run(new FrmCheckUser());
            return;
            IntPtr handle = CreateToolhelp32Snapshot((uint)SnapShotFlags.TH32CS_SNAPPROCESS, 0);
            bool profilename = false;
            if ((int)handle != -1)
            {
                PROCESSENTRY32 pe32 = new PROCESSENTRY32();
                pe32.dwSize = (uint)Marshal.SizeOf(typeof(PROCESSENTRY32));
                int bMore = Process32First(handle, ref pe32);
                PROCESSENTRY32 pe;
                while (bMore == 1)
                {
                    IntPtr temp = Marshal.AllocHGlobal((int)pe32.dwSize);
                    Marshal.StructureToPtr(pe32, temp, true);
                    pe = (PROCESSENTRY32)Marshal.PtrToStructure(temp, typeof(PROCESSENTRY32));
                    Marshal.FreeHGlobal(temp);
                    if (pe32.szExeFile.ToString().ToUpper() == "CIT.WMS.EXE")
                    {
                        profilename = true;
                    }

                    bMore = Process32Next(handle, ref pe32);
                }
            }
            CloseHandle(handle);
            if (profilename)
            {
                MessageBox.Show("程序已启动");
                System.Windows.Forms.Application.Exit();
            }
            else
            {
                Application.Run(new FrmMain());
            }
        }



        [DllImport("Toolhelp.dll")]
        public static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processid);
        [DllImport("Coredll.dll")]
        public static extern int CloseHandle(IntPtr handle);
        [DllImport("Toolhelp.dll")]
        public static extern int Process32First(IntPtr handle, ref PROCESSENTRY32 pe);
        [DllImport("Toolhelp.dll")]
        public static extern int Process32Next(IntPtr handle, ref PROCESSENTRY32 pe);


        [StructLayout(LayoutKind.Sequential)]
        public struct PROCESSENTRY32
        {
            public uint dwSize;
            public uint cntUsage;
            public uint th32ProcessID;
            public IntPtr th32DefaultHeapID;
            public uint th32ModuleID;
            public uint cntThreads;
            public uint th32ParentProcessID;
            public int pcPriClassBase;
            public uint dwFlags;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]//注意，此处为宽字符  
            public string szExeFile;
            public uint th32MemoryBase;
            public uint th32AccessKey;
        }

        public enum SnapShotFlags : uint
        {
            TH32CS_SNAPHEAPLIST = 0x00000001,
            TH32CS_SNAPPROCESS = 0x00000002,
            TH32CS_SNAPTHREAD = 0x00000004,
            TH32CS_SNAPMODULE = 0x00000008,
            TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE),
            TH32CS_GETALLMODS = 0x80000000
        }
    }
}